package sge.DAO;

import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import sge.Datos.ModeloTabla;
import sge.Entidades.*;

public class AsistenteDAO implements ObjetoDAO {

    private final static Logger LOG = Logger.getLogger(UsuarioDAO.class.getName());

    public AsistenteDAO() {
    }

    public boolean crear(Asistente asistente) {
        String consulta = "INSERT INTO asistente(id_asistente, documento, nombre, "
                + "apellido, direccion, telefono, email, fecha_nac, estado) "
                + "VALUES(NULL, '"
                + asistente.getDocumento() + "', '"
                + asistente.getNombre() + "', '"
                + asistente.getApellido() + "', '"
                + asistente.getDireccion() + "', '"
                + asistente.getTelefono() + "', '"
                + asistente.getEmail() + "', '"
                + asistente.getFechaNac() + "', '"
                + asistente.getEstado() + "');";

        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;
        if (exito) {
            asistente.setIdAsistente(CONEXION.obtenerUltimoIDGenerado());
        }
        return exito;
    }

    public boolean modificar(Asistente asistente) {
        String consulta = "UPDATE asistente SET documento='"
                + asistente.getDocumento() + "', nombre='"
                + asistente.getNombre() + "', apellido='"
                + asistente.getApellido() + "', direccion='"
                + asistente.getDireccion() + "', telefono='"
                + asistente.getTelefono() + "', email='"
                + asistente.getEmail() + "', fecha_nac='"
                + asistente.getFechaNac() + "', estado='"
                + asistente.getEstado() + "' WHERE id_asistente='"
                + asistente.getIdAsistente() + "';";

        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;
        return exito;

    }

    public boolean eliminar(int idAsistente, int es) {
        String consulta = "UPDATE asistente SET estado = '"+es+"' WHERE id_asistente='"
                + idAsistente + "';";

        boolean exito = CONEXION.ejecutarSQL(consulta) > 0;
        return exito;
    }

    public boolean consultar(Asistente asistente) {

        String consulta = "SELECT * FROM asistente";

        if (asistente.getIdAsistente() != null) {
            consulta += " WHERE id_asistente = '" + asistente.getIdAsistente() + "';";
        } else if (asistente.getDocumento() != null) {
            consulta += " WHERE documento = '" + asistente.getDocumento() + "';";
        } else {
            return false;
        }

        PreparedStatement ps = CONEXION.crearSentenciaPreparada(consulta);

        try {

            ResultSet rs = ps.executeQuery();

            if (rs.next()) {
                //Los indices estaban corridos
                asistente.setDocumento(rs.getString(2));
                asistente.setNombre(rs.getString(3));
                asistente.setApellido(rs.getString(4));
                asistente.setDireccion(rs.getString(5));
                asistente.setTelefono(rs.getString(6));
                asistente.setEmail(rs.getString(7));
                asistente.setFechaNac(rs.getString(8));//Cambiarlo por String
                asistente.setEstado(rs.getString(9));

                return true;
            }

        } catch (SQLException ex) {
            Logger.getLogger(UsuarioDAO.class.getName()).log(Level.SEVERE, null, ex);
        }
        return false;
    }

    public ModeloTabla seleccionar() {
        String consulta = "SELECT * FROM asistente";
        ArrayList<String> cols = new ArrayList<>();

        cols.add("Id asistente");
        cols.add("Documento");
        cols.add("Nombre");
        cols.add("Apellido");
        cols.add("Dirección");
        cols.add("Telefono");
        cols.add("Email");
        cols.add("Fecha Nacimiento");
        cols.add("Estado");

        ModeloTabla modelo = new ModeloTabla(consulta, cols, false);

        return modelo;

    }
}
